package algo;

import java.util.ArrayList;
import java.util.Collections;

public class ListStockage {

	ArrayList<StockageMessage> stockMessages;


	public ListStockage() {
		stockMessages = new ArrayList<StockageMessage>();
	}
	
	public ListStockage(ArrayList<StockageMessage> stockMessages) {
		
		this.stockMessages = stockMessages;
		
	}
	
	public ArrayList<StockageMessage>  getStockageMessage() {
		return stockMessages;
		
	}
	
	/*
	 * Permet de supprimer un message de notre liste à partir de
	 * son numéro de message
	 */
	public void removeStockageMessage(int numMessage) {
		
		for(int i = 0; i < stockMessages.size(); i++) {

			if(stockMessages.get(i).getNumMsg() == numMessage) {
				stockMessages.remove(i);
			}
		}
	}
	
	/*
	 * Permet d'ajouter un message ou de le mettre à jour dans notre liste locale
	 */
	public void addStockageMessage(StockageMessage stockMessage) {

		int indiceMessage = -1;

		for(int i = 0; i < stockMessages.size(); i++) {

			//Si notre message existe déjà, on met à jour le stockageMessage
			if(stockMessages.get(i).getNumMsg() == stockMessage.getNumMsg()) {
				indiceMessage = i;
			}
		}

		if(indiceMessage > -1) {

			StockageMessage nouvelle = new StockageMessage();
			nouvelle.setNumMsg(stockMessage.getNumMsg());
			if(stockMessage.getEst() != 0) nouvelle.setEst(stockMessage.getEst());
			nouvelle.setTypeDemande(stockMessage.getTypeDemande());
			
			if(stockMessages.get(indiceMessage).getTypeEvenement() != null)
				nouvelle.setTypeEvenement(stockMessage.getTypeEvenement());

			if(stockMessages.get(indiceMessage).getTypeMessage() != null)
				nouvelle.setTypeMessage(stockMessage.getTypeMessage());
			
			stockMessages.remove(indiceMessage); stockMessages.add(nouvelle);

		}
		else {
			stockMessages.add(stockMessage);
		}


	}

	/*
	 * Permet de récupérer un message à partir de son numéro
	 */
	public StockageMessage getStockageMessage(int numMessage) {

		for(int i = 0; i < stockMessages.size(); i++) {

			if(stockMessages.get(i).getNumMsg() == numMessage) return stockMessages.get(i);
		}

		return null;

	}

	/*
	 * Permet de trier notre liste locale par ordre d'estampille croissant
	 */
	public void triByEst() {
		
		Collections.sort(stockMessages, Collections.reverseOrder());
	}


}
